package com.kuang.exam.core.api;


import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * 全局错误码定义，用于定义接口的响应数据，
 * 枚举名称全部使用代码命名，在系统中调用，免去取名难的问题。
 */
@NoArgsConstructor
@AllArgsConstructor
public enum ApiError implements Serializable {


    /**
     * 通用错误，接口参数不全
     */
    ERROR_10010001("参数不全或类型错误！"),
    ERROR_10010002("您还未登录，请先登录！"),
    ERROR_10010003("数据不存在！"),
    ERROR_10010012("图形验证码错误！"),
    ERROR_10010013("短信验证码错误！"),
    ERROR_10010014("不允许重复评论！"),


    ERROR_20010001("用户不存在！"),
    ERROR_20010002("手机号或密码错误！"),
    ERROR_20010003("注册手机号已存在！"),
    ERROR_20010004("旧手机验证码错误！"),
    ERROR_20010005("新绑定的手机号已存在！"),
    ERROR_20010008("首次登录必须完善手机！"),
    ERROR_20010009("社交账号已经被绑定过！"),


    ERROR_90010001("管理员账号不存在！"),
    ERROR_90010002("账号或密码错误！"),
    ERROR_90010003("至少要包含一个角色！"),
    ERROR_90010004("管理员账号无法修改！"),
    ERROR_90010005("账号被禁用，请联系管理员！"),
    ERROR_90010006("角色id和角色名称不能为空！"),
    ERROR_90010007("角色id已存在！"),
    ERROR_90010008("角色名称已存在！"),

    /**
     * 考试相关
     */
    ERROR_70010001("题库存在题目，无法删除！"),


    ERROR_60000001("数据不存在！");

    public String msg;

    /**
     * 生成Markdown格式文档，用于更新文档用的
     *
     * @param args
     */
    public static void main(String[] args) {
        for (ApiError e : ApiError.values()) {
            System.out.println("'" + e.name().replace("ERROR_", "") + "':'" + e.msg + "',");
        }
    }

    /**
     * 获取错误码
     *
     * @return
     */
    public Integer getCode() {
        return Integer.parseInt(this.name().replace("ERROR_", ""));
    }
}
